package com.demo.task

import java.util.concurrent.ArrayBlockingQueue

class UniqueArrayBlockingQueue<T>(capacity: Int) : ArrayBlockingQueue<T>(capacity) {
    private val set = HashSet<T>() // 用于检查唯一性

    override fun offer(element: T): Boolean {
        return if (set.add(element)) { // 如果元素成功添加到 Set
            super.offer(element) // 添加到队列
        } else {
            false // 元素已存在，不添加
        }
    }

    override fun take(): T {
        val element = super.take()
        if (element != null) {
            set.remove(element) // 从 Set 中移除
        }
        return element
    }
}